5 Schema Und LiefergegenstäNde

Kapitel 5: Schema und Liefergegenstände

Dieses Kapitel beschreibt die Struktur der Liefergegenstände des CAP-Projekts, definiert die zentrale Stellung der Protokoll-Schema-Definitionsdateien innerhalb der Liefergegenstände sowie die Zuordnung zwischen Schema-Versionen und Protokollversionen. Das Verständnis der hierarchischen Beziehungen und Abhängigkeiten zwischen den Liefergegenständen ist die Grundlage für die Zusammenarbeit von Protokollimplementierern und Community-Beitragenden am Projekt.

5.1 Drei Kategorien von Kernliefergegenständen

Das Liefergegenstände-System des CAP-Projekts besteht aus drei Kategorien von Kernliefergegenständen, die von der Dokumentation über die Definition bis zur Implementierung eine vollständige Lieferkette bilden:

Kategorie der LiefergegenständeBeschreibungBeispiel für Repository-Pfad
Mehrsprachige ProtokolldokumentationUmfasst den Architekturplan (Blueprint) und die technische Protokollspezifikation (Specification), die in 9 Sprachen äquivalent veröffentlicht werden und eine menschenlesbare Beschreibung der Designabsicht, des Fähigkeitsumfangs und der technischen Details des Protokolls bietendocs/{lang}/blueprint/, docs/{lang}/specification/
Protokoll-Schema-DefinitionsdateienDie autoritative Definition der Protokollnachrichtenformate, bereitgestellt in mehreren maschinenlesbaren und menschenlesbaren Formaten, als Referenz für SDK-Implementierung und Interoperabilitätstestsschema/{version}/
SDK-Implementierungen in verschiedenen SprachenKonkrete Programmiersprachen-Implementierungen des Protokolls, entwickelt auf Basis der Schema-Definitionsdateien, die Entwicklern verschiedener Technologie-Stacks sofort einsetzbare Protokollintegrationsfähigkeiten bietensdk/{language}/

Hierarchische Beziehungen zwischen den drei Kategorien von Liefergegenständen:

  • Mehrsprachige Protokolldokumentation befindet sich auf der strategischen und normativen Ebene und definiert das übergeordnete Design dessen, „was das Protokoll tut" und „wie es es tut"
  • Protokoll-Schema-Definitionsdateien befinden sich auf der Definitionsebene und wandeln die Nachrichtenformate der Protokollspezifikation in präzise, maschinenverarbeitbare formale Definitionen um
  • SDK-Implementierungen in verschiedenen Sprachen befinden sich auf der Implementierungsebene und wandeln die Protokollfähigkeiten auf Basis der Schema-Definitionsdateien in direkt aufrufbare Programmierschnittstellen um

Die Aktualisierung der drei Kategorien von Liefergegenständen folgt einem Top-Down-Übertragungspfad: Änderungen an der Protokolldokumentation treiben die Aktualisierung der Schema-Definition voran, und die Aktualisierung der Schema-Definition treibt die Anpassung der SDK-Implementierung voran.

5.2 Rolle der Schema-Definitionsdateien

Die Schema-Definitionsdateien sind die autoritative Definition (Authoritative Definition) der CAP-Protokollnachrichtenformate und übernehmen im Liefergegenstände-System des Projekts die folgenden Kernfunktionen:

  • Einzige Wahrheitsquelle für Nachrichtenformate (Single Source of Truth): Die Schema-Definitionsdateien beschreiben präzise die Feldnamen, Datentypen, Pflicht-/Optional-Einschränkungen und verschachtelten Strukturen aller Nachrichtentypen im CAP-Protokoll. Wenn Mehrdeutigkeiten zwischen der Textbeschreibung der Protokolldokumentation und der Schema-Definition bestehen, hat die Schema-Definition Vorrang
  • Entwicklungsreferenz für SDK-Implementierung: Die Nachrichtenserialisierungs-/Deserialisierungslogik der SDKs in verschiedenen Sprachen muss strikt der Schema-Definition folgen. SDK-Entwickler erfahren über die Schema-Definitionsdateien die genaue Struktur jedes Nachrichtentyps und stellen sicher, dass die SDK-Implementierungen in verschiedenen Sprachen im Nachrichtenformat vollständig konsistent sind
  • Validierungsreferenz für Interoperabilitätstests: Interoperabilitätstests zwischen SDKs verschiedener Sprachen verwenden die Schema-Definition als Validierungsstandard. Eine von einem SDK serialisierte Nachricht muss von einem anderen SDK korrekt deserialisiert werden können, und die Schema-Definitionsdatei ist die einzige Grundlage für die Bestimmung der „Korrektheit"
  • Grundlage für automatisierte Validierung: Schema-Definitionsdateien (insbesondere schema.json) können direkt von automatisierten Tools konsumiert werden, für die automatische Validierung von Nachrichtenformaten, Codegenerierung und Dokumentationsgenerierung, wodurch menschliche Fehler reduziert werden

5.3 Zuordnung zwischen Schema-Version und Protokollversion

Jede offiziell veröffentlichte CAP-Protokollversion entspricht einer Schema-Version, und die Schema-Dateien werden in einem nach dem Veröffentlichungsdatum der Protokollversion benannten Verzeichnis gespeichert, um eine klare und nachvollziehbare Versionszuordnung zu gewährleisten.

Verzeichnisbenennungsregeln:

ProtokollstatusSchema-VerzeichnisBeschreibung
Entwurf (Draft)schema/draft/Schema-Definition in Entwicklung, jederzeit änderbar, ohne Kompatibilitätsgarantien
Offiziell veröffentlichtschema/{JJJJ-MM-TT}/Benannt nach dem Veröffentlichungsdatum, z. B. schema/2025-10-25/, nach Veröffentlichung unveränderlich (immutable)

Versionszuordnungsregeln:

  • Eins-zu-eins-Zuordnung: Jede offiziell veröffentlichte Protokollversion entspricht genau einem Schema-Versionsverzeichnis, dessen Name das Veröffentlichungsdatum dieser Protokollversion verwendet
  • Gemeinsamer Entwurf: Alle Schema-Änderungen in der Entwurfsphase teilen sich das schema/draft/-Verzeichnis. In der Entwurfsphase werden keine Versionsnummern unterschieden
  • Unveränderlichkeit: Die Dateien in offiziell veröffentlichten Schema-Verzeichnissen werden nach der Veröffentlichung nicht mehr geändert. Alle Schema-Änderungen (einschließlich Fehlerkorrekturen) erfolgen durch die Veröffentlichung neuer Versionen
  • Historische Aufbewahrung: Verzeichnisse alter Schema-Versionen werden dauerhaft im Repository aufbewahrt, als historische Referenz und zur Validierung der Abwärtskompatibilität

Aktuelle Versionszuordnung:

ProtokollversionSchema-VerzeichnisStatus
draftschema/draft/In Entwicklung
2025-10-25schema/2025-10-25/Veröffentlicht

5.4 Beschreibung der Schema-Dateiformate

Jedes Schema-Versionsverzeichnis enthält 3 Formate von Schema-Definitionsdateien, die jeweils auf unterschiedliche Anwendungsszenarien und Nutzer ausgerichtet sind:

FormatDateinameVerwendungszweckHauptnutzer
JSON Schemaschema.jsonMaschinenlesbare Nachrichtenformatdefinition, verwendet für automatisierte Validierung, Codegenerierung und sprachübergreifende InteroperabilitätsüberprüfungAutomatisierungstools, CI/CD-Pipelines, SDK-Codegeneratoren
TypeScriptschema.tsTypeScript-Typdefinition, bietet native Typunterstützung für das TypeScript/JavaScript-Ökosystem, verwendet für TS/JS-SDK-Entwicklung und IDE-TypprüfungTypeScript/JavaScript-SDK-Entwickler, Frontend-Integrationsentwickler
MDXschema.mdxRenderbares Dokumentformat, das die Schema-Definition auf menschenfreundliche Weise darstellt, verwendet für die Anzeige auf Dokumentationswebsites und zum Erlernen des ProtokollsProtokolllernende, Dokumentationswebsites, technische Prüfer

Beziehung zwischen den drei Formaten:

  • schema.json ist das autoritative Format: Wenn Unterschiede zwischen den drei Formaten bestehen, hat schema.json Vorrang. schema.ts und schema.mdx sollten semantisch mit schema.json konsistent sein
  • schema.ts ist das Entwicklungskomfortformat: schema.ts wandelt die Typdefinitionen aus schema.json in native TypeScript-Typen um, sodass TS/JS-Entwickler direkt in der IDE Typhinweise und Kompilierungszeitprüfungen erhalten
  • schema.mdx ist das Anzeigeformat: schema.mdx wandelt die strukturierten Definitionen aus schema.json in renderbaren Dokumentinhalt um und unterstützt das interaktive Durchsuchen der Schema-Definition auf Dokumentationswebsites

Beispiel für die Dateiverzeichnisstruktur:

schema/
├── draft/
│   ├── schema.json
│   ├── schema.ts
│   └── schema.mdx
└── 2025-10-25/
    ├── schema.json
    ├── schema.ts
    └── schema.mdx